package com.lukasz;
//tu jest komentarz
class Dzielenie{
	int liczba = 0;
	int metoda(int dzielna){
		return dzielna/liczba;
	}
	static void wyjatekMetoda() throws IllegalAccessException{
		System.out.println("Wewnatrz metody");
		throw new IllegalAccessException();
	}
	void setLiczba(int liczba){
		this.liczba = liczba;
	}
}
class A{
	protected int a;
	private int b;
	
	public A(){
	}
	public A(int a, int b){
		this.a = a;
		this.b = b;
	}
	public A(A obiekt){
		this.a = obiekt.a;
		this.b = obiekt.b;
	}
	public void setB(int b) {
		this.b = b;
	}
	public int getB() {
		return b;
	}
	public void setA(int a) {
		this.a = a;
	}
	public int getA() {
		return a;
	}
}

class B extends A{
	private int c;
	
	public B(){
	}
	public B(int a, int b, int c){
		super(a,b);
		this.c = c;
	}
	public B(A obiekt, int c){
		super(obiekt);
		this.c = c;
	}
	void wyswietlPola(){
		System.out.println(super.a +" "+getB()+" "+c);
	}
}

@SuppressWarnings("serial")
class MojWyjatek extends Exception{
	private int wartosc;
	MojWyjatek(int wartosc){
		this.wartosc = wartosc;
	}
	public String toString(){
		return "MojWyjatek["+wartosc+"]";
	}
}

public class App {
	static int wartosc = 5;
	int wynik = 0;
	int silnia(int n){
		if(n==1){
			return 1;
		}
		wynik = silnia(n-1)+n;
		System.out.println(wynik);
		return wynik;
	}
	void metodaWyswietlException(int wartosc)throws MojWyjatek{
		System.out.println("Wywolanie metodawyswietlWyjatek("+wartosc+")");
		if(wartosc>10)
				throw new MojWyjatek(wartosc);
		System.out.println("Normalne wyjscie");
		
	}
	
    public static void main( String[] args ){
    	int liczbaKolumn = 3;
    	int liczbaWierszy = 2;
    	String tab[][] = {
    			{"ala","ola","ania"},
    			{"on","lukasz","ja"},
    	};
    	
    	for(String imiona[] : tab){
    		for(String imie : imiona){
    			System.out.println(imie);
    		}
    	}
    	System.out.println("Petla for");
    	for(int i = 0; i<liczbaWierszy; i++){
    		for(int j=0; j<liczbaKolumn; j++){
    			System.out.print(tab[i][j]+ " ");
    		}
    		System.out.println("");
    	}
    	System.out.println("Silnia !!!!!!!!!!!!!!!!!!!!!!!!");
    	//App app = new App();
    	//app.silnia(5);
    	//System.out.println(app.silnia(3));
    	wartosc = 12;
    	System.out.println(App.wartosc);
    	
    	System.out.println("////////////////////////////////");
    	A obiektA = new A(5,6);
    	B obiekt = new B(obiektA,3);
    	obiekt.wyswietlPola();
    	obiekt.setB(4);
    	obiekt.wyswietlPola();
    	System.out.println("////////////////////////////////");
    	//A obiektAA = new B(9,8,7);
    	Dzielenie dzielenie = new Dzielenie();
    	try{
    		System.out.println(dzielenie.metoda(12));
    	}catch(ArithmeticException e){
    		System.out.println("dzielenie przez zero "+e);
    		dzielenie.setLiczba(12);
    		System.out.println(dzielenie.metoda(12));
    	}catch(ArrayIndexOutOfBoundsException e){
    		System.out.println("Indeks poza granicami");
    	}
    	
    	System.out.println("wyjatki           AA");
    	try{
    		Dzielenie.wyjatekMetoda();
    	}catch(IllegalAccessException e){
    		System.out.println("Zlapano "+e);
    	}
    	App app = new App();
    	try{
    		app.metodaWyswietlException(2);
    		app.metodaWyswietlException(20);
    	}catch(MojWyjatek e){
    		System.out.println("Przechwycono "+e);
    	}
    }    
}
